Este es una adaptación y traducción del tutorial de Data Carpentry: OpenRefine for Social Science Data.
La lección originarl y esta versión está bajo la licencia CC By 4.0
Una parte del flujo de trabajo con los datos es prepararlos para el análisis. Parte de esto implica la limpieza de datos. Es decir, identificar los errores en los datos corregirlos o darles un formato consistente. Este paso, necesario para la reproductivilidad de la metodología, debe tomarse con el mismo cuidado que el análisis.
OpenRefine (anteriormente Google Refine) es una poderosa herramienta gratuita y de código abierto para trabajar con datos desordenados: limpiarlos y transformarlos de un formato a otro.
Esta lección le enseñará a usar OpenRefine para limpiar y formatear datos de manera efectiva y realizar un seguimiento automático de cualquier cambio que realice. Mucha gente comenta que esta herramienta les ahorra literalmente meses de trabajo tratando de hacer estas ediciones a mano.
Instala OpenRefine en la computadora.
Descarga los archivos para trabajar.
Enseñanza: 10 min
Ejercicios: 0 min
Preguntas
¿Para qué sirve OpenRefine?
Objetivos
Los datos son a menudo muy desordenados. OpenRefine proporciona un conjunto de herramientas que le permiten identificar y modificar los datos desordenados.
Es importante saber qué hiciste con tus datos. Además, las revistas acdémicas, las agencias de subvenciones y otras instituciones requieren documentación de los pasos que siguió al trabajar con sus datos. Con OpenRefine, puede capturar todas las acciones aplicadas a sus datos sin procesar y compartirlas con su publicación como material complementario.
Todas las acciones se revierten fácilmente en OpenRefine.
Si guarda su trabajo, será en un archivo nuevo. OpenRefine siempre usa una copia de sus datos y no modifica su conjunto de datos original.
Los pasos de limpieza de datos a menudo necesitan repetirse con varios archivos. OpenRefine realiza un seguimiento de todas sus acciones y permite que se apliquen a diferentes conjuntos de datos.
Algunos conceptos, como los algoritmos de agrupamiento (clusters), son bastante complejos, pero OpenRefine facilita su introducción, uso y demostración de su poder.
Código abierto ( fuente en GitHub ).
Una gran comunidad en crecimiento, desde principiantes hasta expertos.
Funciona con conjuntos de datos de gran tamaño (100.000 filas). Puede ajustar la asignación de memoria para acomodar conjuntos de datos más grandes.
OpenRefine siempre mantiene sus datos privados en su propia computadora hasta que elija compartirlos. Funciona ejecutando un pequeño servidor en su computadora y usando su navegador web para interactuar con él, pero sus datos privados nunca salen de su computadora a menos que así lo desee.
Nota: este es un programa Java que se ejecuta en su máquina (no en la nube). Se ejecuta dentro de su navegador, pero no se necesita conexión a Internet.
Siga las instrucciones de configuración para instalar OpenRefine.
Si después de la instalación y ejecución de OpenRefine, no se abre automáticamente, dirija su navegador a http://127.0.0.1:3333/ o http://localhost:3333 para iniciar el programa.
Puede encontrar mucho más sobre OpenRefine en http://openrefine.org y ver algunos excelentes videos introductorios. Estos videos y otros en OpenRefine también se pueden encontrar en YouTube buscando en ‘OpenRefine’. Hay un grupo de Google que puede responder muchas preguntas y problemas de principiantes. También se puede encontrar información en StackOverflow , donde puede encontrar mucha ayuda. Al igual que con otros programas de este tipo, las bibliotecas de OpenRefine también están disponibles, donde puede encontrar un script que necesite y copiarlo en su instancia de OpenRefine para ejecutarlo en su conjunto de datos.
OpenRefine es una herramienta potente, gratuita y de código abierto que se puede utilizar para la limpieza de datos.
OpenRefine rastreará automáticamente cualquier paso, lo que le permitirá retroceder según sea necesario y brindará un registro de todo el trabajo realizado.
Enseñanza: 15 min
Ejercicios: 20 min
Preguntas
¿Cómo podemos traer nuestros datos a OpenRefine?
¿Cómo podemos ordenar y resumir nuestros datos?
¿Cómo podemos encontrar y corregir errores en nuestros datos sin procesar?
Objetivos
Cree un nuevo proyecto OpenRefine a partir de un archivo CSV.
Comprenda los posibles problemas con los encabezados de los archivos.
Use facetas para resumir datos de una columna.
Utilice la agrupación para detectar posibles errores de escritura.
Comprenda que existen diferentes algoritmos de agrupamiento que pueden dar resultados diferentes.
Utilice menús desplegables para eliminar los espacios en blanco de las celdas.
Manipule los datos siguiendo los pasos anteriores con deshacer/rehacer.
En Windows, puede iniciar el programa OpenRefine haciendo doble clic en el archivo openrefine.exe. Los servicios de Java se iniciarán automáticamente en su máquina y OpenRefine se abrirá en su navegador. En una Mac, OpenRefine se puede iniciar desde la carpeta Aplicaciones. Si está utilizando Linux, deberá navegar a su directorio OpenRefine en la línea de comandos y ejecutar ./refine.
OpenRefine puede importar una variedad de formatos y extensiones de archivos, incluidos archivos separados por tabulaciones (tsv), separados por comas (csv), Excel ( xls, xlsx), JSON, XML, RDF como XML y hojas de cálculo de Google. Consulte la página Crear un proyecto mediante la importación de datos de OpenRefine para obtener más información.
En este primer paso, buscaremos en nuestra computadora el archivo de datos de muestra para esta lección. En este caso, utilizaremos datos obtenidos de entrevistas a agricultores en dos países del este de África subsahariana (Mozambique y Tanzania). Las instrucciones para descargar los datos están disponibles aquí.
Una vez que se inicia OpenRefine en su navegador, el margen izquierdo tiene opciones para Create Project, Open Projecto Import Project. Aquí vamos a crear un nuevo proyecto:
Haga clic Create Project y seleccione Get data from This Computer. Haga clic Choose Files y seleccione el archivo SAFI_openrefine.csv que descargó. Haga clic Open o doble clic en el nombre del archivo.
Haga clic Next debajo del botón de exploración para cargar los datos en OpenRefine.
OpenRefine le brinda una vista previa, una oportunidad de mostrarle que entendió el archivo. Si, por ejemplo, su archivo estaba realmente delimitado por tabuladores, la vista previa podría parecer extraña. A continuación, elegiría el separador correcto en el cuadro que se muestra y haría clic en Update Preview(centro a la derecha). Si este es el archivo incorrecto, haga clic en inicio (arriba a la izquierda). También hay opciones para indicar si el conjunto de datos tiene encabezados de columna incluidos y si OpenRefine debe omitir una cantidad de filas antes de leer los datos.
En cáracter encoding elija UTF8 y verifique que la opción de quitar espacios en blanco esté seleccionada.

Tenga en cuenta que en el paso 1, puede cargar datos en un formulario estándar desde una dirección web seleccionando Get data from Web Addresses (URLs). Sin embargo, esto no funcionará para todas las URL
Exploración de datos mediante la aplicación de múltiples filtros
Las facetas son una de las características más útiles de OpenRefine y pueden ayudar tanto a obtener una descripción general de los datos en un proyecto como a brindarle más coherencia.
OpenRefine admite la navegación por facetas como mecanismo para
ver una imagen grande de sus datos, y filtrando solo el subconjunto de filas que desea cambiar de forma masiva.
Una ‘Faceta’ agrupa todos los valores similares que aparecen en una columna y luego le permite filtrar los datos por estos valores y editar valores en muchos registros al mismo tiempo.
Un tipo de faceta se denomina ‘faceta de texto’. Esto agrupa todos los valores de texto idénticos en una columna y enumera cada valor con la cantidad de registros en los que aparece. La información de la faceta siempre aparece en el panel de la izquierda en la interfaz de OpenRefine.
Aquí usaremos facetas para buscar posibles errores en la entrada de datos en la columna village.
Desplácese hasta la villagecolumna.
Haga clic en la flecha hacia abajo y elija Facet> Text facet.
En el panel izquierdo, ahora verá un cuadro que contiene cada valor único en la columna village junto con un número que representa cuántas veces aparece ese valor en la columna.
4.Intente ordenar esta faceta por nombre y por recuento. ¿Notas algún problema con los datos? ¿Qué son?
Pase el ratón sobre uno de los nombres de lalista. Deberías ver que tienes una función edit disponible.
Puede usar esto para corregir un error de inmediato, y OpenRefine le preguntará si desea hacer la misma corrección para cada valor que encuentre como ese. Pero OpenRefine ofrece formas aún mejores de encontrar y corregir estos errores, que usaremos en su lugar. Aprenderemos sobre esto cuando hablemos de agrupamiento.
Chirdozoes probable que se haya ingresado incorrectamente Chirodzo.
Rucaes probable que se haya ingresado incorrectamente Ruaca.
Ruaca - Nhamuenday Ruaca-Nhamuendase refieren al mismo lugar (se diferencian solo por los espacios alrededor del guión). También puede preguntarse si ambos son lo mismo que Ruaca. Veremos cómo corregir estas entradas mal escritas y mal escritas en un ejercicio posterior.
Es casi seguro que la entrada 49es un error, pero no podrá corregirlo haciendo referencia a otros datos.
Usando facetas, averigüe cuántos valores diferentes de interview_date hay en los resultados de la encuesta.
¿La columna tiene el formato Texto o Fecha?
Use facetas para producir una visualización de línea de tiempo para archivos interview_date. Deberá utilizar Edit cells Common transforms>To date```para convertir esta columna en fechas.
¿Durante qué período se recopilaron la mayoría de las entrevistas?
Para la columna interview_datedo Facet> Text facet. Aparecerá un cuadro en el panel izquierdo que muestra que hay 19 entradas únicas en esta columna.
De forma predeterminada, la columna interview_datetiene el formato de Texto.
Puede cambiar el formato haciendo Edit cells> Common transforms> To date. Observe que los valores de la columna se vuelven verdes. Hacer Facet> Timeline facet crea un cuadro en el panel izquierdo que muestra un histograma del número de entradas para cada fecha.
La mayor parte de los datos se recopilaron en noviembre de 2016.
Manual de OpenRefine: facetas
Además de ‘Facetas de texto’, Refine también admite una variedad de otros tipos de facetas. Éstos incluyen:
Las facetas numéricas y de diagrama de dispersión muestran gráficos en lugar de listas de valores. El gráfico de facetas numéricas incluye controles de “arrastrar y soltar” que puede usar para establecer un rango inicial y final para filtrar los datos que se muestran. Estas facetas se exploran más en Examinando números en OpenRefine
Las facetas personalizadas son una gama de diferentes tipos de facetas. Algunas de las facetas personalizadas predeterminadas son:
Faceta de palabra: desglosa el texto en palabras y cuenta el número de registros en los que aparece cada palabra.
Faceta duplicada: esto da como resultado una faceta binaria de ‘verdadero’ o ‘falso’. Las filas aparecen en la faceta “verdadero” si el valor de la columna seleccionada coincide exactamente con un valor de la misma columna en otra fila
Faceta de longitud de texto: crea una faceta numérica basada en la longitud (número de caracteres) del texto en cada fila de la columna seleccionada. Esto puede ser útil para detectar datos incorrectos o inusuales en un campo donde se esperan longitudes específicas (por ejemplo, si se espera que los valores sean años, es probable que cualquier fila con una longitud de texto superior a 4 para esa columna sea incorrecta)
Faceta por espacio en blanco: una faceta binaria de ‘verdadero’ o ‘falso’. Las filas aparecen en la faceta ‘verdadero’ si no tienen datos presentes en esa columna. Esto es útil cuando se buscan filas a las que les faltan datos clave.
En OpenRefine, agrupar significa “encontrar grupos de diferentes valores que podrían ser representaciones alternativas de lo mismo”. Por ejemplo, es muy probable que las dos cadenas New York y new york se refieran al mismo concepto y solo tengan diferencias de mayúsculas. Del mismo modo, Gödel y Godel probablemente se refiera a la misma persona. La agrupación en clústeres es una herramienta muy poderosa para limpiar conjuntos de datos que contienen entradas mal tipeadas o mal escritas. OpenRefine tiene varios algoritmos de agrupación integrados. Experimente con ellos y aprenda más sobre estos algoritmos y cómo funcionan.
Cree una faceta de texto con la columna village como la que hizo en el paso anterior -panel izquierdo- y haga clic en el botón Cluster / Agrupar.
En la ventana emergente resultante, puede cambiar el Metodo y usar el Función. Pruebe diferentes combinaciones para ver qué diferentes fusiones de valores se sugieren.
Seleccione el método colisón de llaves y la función metaphone3 función. Debe identificar dos grupos.
Haga clic en el cuadro ¿unir? junto a cada grupo, luego haga clic unir y reagrupar.
Intente seleccionar diferente Métodos y Funciones otra vez, para ver qué nuevas fusiones se sugieren.
Debería encontrar que al usar la configuración predeterminada, no se encuentran más clústeres, por ejemplo, para fusionarse Ruaca-Nhamuendacon Ruacao Chirdozocon Chirodzo. (Tenga en cuenta que el método vecino más cercano con ppm de distancia, radius ≥ 4 y block chars ≤ 4 encontrará estos grupos, así como otras configuraciones con levenshtein distancia)
Para fusionar estos valores, pasaremos el cursor sobre ellos en la faceta de texto de la aldea, seleccionaremos editar y cambiaremos manualmente los nombres. Cambiar Chirdozoa Chirodzoy Ruaca-Nhamuendaa Ruaca. Ahora debería tener cuatro clústeres : Chirodzo, God, Ruaca y 49.
Importante: si usa un método o función de teclado diferente, o más veces de las descritas en las instrucciones anteriores, sus soluciones para ejercicios posteriores no serán las mismas que se muestran en esas soluciones de ejercicios.
Los detalles técnicos de cómo funcionan los diferentes algoritmos de agrupamiento se pueden encontrar en el siguiente enlace.
Más sobre agrupamiento/clustering
Breve explicación de cluster: fingerprint
El método fingerprint es el que tiene menos probabilidades de producir falsos positivos.
Este algoritmo trabaja con cadenas (strings) y sigue siempre este proceso, en este orden.
Eliminar los espacios en blanco iniciales y finales
Cambia todos los caracteres a su representación en minúsculas (lowcase)
Elimina todos los caracteres de puntuación y control y
normaliza los caracteres occidentales extendidos a su representación ASCII (por ejemplo, “gödel” → “godel”)
Divide la cadena en tokens separados por espacios en blanco
Ordenar las fichas y eliminar los duplicados
Unir las fichas de nuevo
Ver el código en java aquí.
Los datos de la items_ownedcolumna son un conjunto de elementos de una lista. La lista está entre corchetes y cada elemento está entre comillas simples. Antes de dividir la lista en elementos individuales en la siguiente sección, primero queremos eliminar los corchetes y las comillas.
Haga clic en la flecha hacia abajo en la parte superior de la columna items_owned. Elige Edit Cells>Transform…
Esto abrirá una ventana en la que puede escribir una expresión GREL. GREL son las siglas de General Refine Expression Language.
Primero eliminaremos todos los corchetes izquierdos ( [). En el cuadro Expresión, escriba value.replace(“[”, “”)y haga clic en OK.

La sintaxis de GREL es la siguiente: value.replace()
En el paréntesis escriba, en orden, lo que quiere remplazar y luego por el valor que lo quiere remplazar.
En este caso se usará para eliminar símbolos. Es decir, remplazar un símbolo por nada.
value.replace(“[”, “”)
Note que los valores a cambiar se escriben entre comillas. Si no hay nada entre las comillas simplemente se elimina. Puede eliminar así tildes, puntos, comas, dos puntos, etc.
5.Haga clic en OK. Debería ver que ya en la columna items_owned no hay corchetes izquierdos.
Utilice esta misma estrategia para eliminar las comillas simples ( '), los corchetes derechos ( ]) y los espacios de la columna items_owned.
Ahora que hemos eliminado los caracteres superfluos de nuestra columna items_owned, podemos usar una faceta de texto para ver qué elementos eran de propiedad común o particular de los encuestados.
Ahora debería ver un nuevo cuadro de faceta de texto en el panel de la izquierda. Alli puede observar la frecuencia de cada palabra.
¿Cuáles son los dos artículos que más se poseen? ¿Cuáles son los dos menos comunes?
Realice los mismos pasos de limpieza y ajuste de facetas de texto personalizado para la columna months_lack_food. ¿En qué mes(es) era más probable que los agricultores carecieran de alimentos?
Realice los mismos pasos de limpieza para las columnas months_no_water, liv_owned, res_changey . no_food_mitigation
Sugerencia: para reutilizar un comando GREL, haga clic en la pestaña History y luego haga clic Reuse junto al comando que le gustaría aplicar a esa columna
Al explorar y limpiar un conjunto de datos, es común descubrir después de realizar un cambio que realmente debería haber hecho otra cosa primero. OpenRefine proporciona operaciones Undopara Redohacerlo fácil.
Ejercicio
Haga clic donde dice Undo / Redoen el lado izquierdo de la pantalla. Todos los cambios que ha realizado hasta ahora se enumeran aquí.
Haga clic en el paso al que desea volver; en este caso, retroceda varios pasos antes de realizar cualquier transformación de texto.
Confirme visualmente que esas columnas ahora contienen los caracteres especiales que habíamos eliminado anteriormente.
Tenga en cuenta que aún puede hacer clic en rehacer los pasos posteriores. Antes de pasar a la siguiente lección, vuelva a realizar todos los pasos de su análisis para que todas las columnas que modificó no tengan corchetes, espacios ni comillas simples.
OpenRefine puede importar una variedad de tipos de archivos.
OpenRefine se puede usar para explorar datos usando filtros.
La agrupación en clústeres en OpenRefine puede ayudar a identificar diferentes valores que pueden significar lo mismo.
OpenRefine puede transformar los valores de una columna.